package com.berchen.注解;

import com.sun.istack.internal.NotNull;
import org.junit.Test;
import java.lang.reflect.Method;
import java.util.Arrays;

/**
 * Java8 对注解处理提供了两点改进：可重复的注解，以及可用于类型的注解。
 *
 */
public class TestAnnotation {

    // 类型注解
    @Test
    public void test2(){

        TestAnnotation s=new TestAnnotation();
        s.show("abc");

    }

    // 重复注解
    @Test
    public void test1() throws NoSuchMethodException {

        Class<TestAnnotation> classzz=TestAnnotation.class;
        Method show = classzz.getMethod("show",String.class);
        // 获取方法的注解
        MyAnnotation[] annotations = show.getAnnotationsByType(MyAnnotation.class);
        Arrays.stream(annotations).forEach(x-> System.out.println(x.value()));
    }

    // 要重复注解，必须要在注解上加上@Repeatable注解，并且要创建一个自定义的注解容器MyAnnotations
    @MyAnnotation("world")
    @MyAnnotation("hello")
    public void show(@MyAnnotation("abc") String string){}  // 可以注解类型
}
